<?php

class Application_Model_Cuentas extends Sgit_Model
{
    protected $_name = 'control_economico_series';
    protected $_primary = 'id';
    protected $_cache_activa = true;

    protected $_allSeriesDespliegue = null;
    protected $_allSeries = null;
    
    protected $_cache_series=false;
    protected $_cache_datos=false;

    protected $version = 0;
    


    function setAnio($anio)
    {
        $this->anio = $anio;
    }

    function setVersion($version)
    {
        $this->version = $version;
    }
    function setZona($idZona)
    {
        $this->idZona = $idZona;
    }

    function setMesAlojamiento($mes)
    {
        $this->mes_alojamiento = $mes;
    }


    function getSerieNaturaleza($id_naturaleza)
    {
        $rows = $this->getSeries();
        return $rows[$id_naturaleza];
    }


    function getSerieNaturalezaMeses($id_naturaleza, $mes = null)
    {
        
        if(!$this->_cache_datos_categoria[$id_naturaleza]){//cache 
            $this->_cache_datos_categoria[$id_naturaleza]=$this->getSerieNaturaleza($id_naturaleza);
        }
    
        if (is_numeric($mes))
            return $this->_cache_datos_categoria[$id_naturaleza]['mes'][$mes];
        else
            return $this->_cache_datos_categoria[$id_naturaleza]['mes'];
                
    }


    function getNaturalezas()
    {
        
        if(!$this->_naturalezas){
            $select = $this->getAdapter()->select();
            $select->from(array('control_economico_naturalezas'));
            $this->_naturalezas = $this->getAdapter()->fetchAll($select);
        }
        
        return $this->_naturalezas;
    }


    function getAllSeries($id_naturaleza = null)
    {


        if ($this->_cache_series === false) {//cache

            if (is_numeric($this->idZona))
            {
                $vs[]=0;
                $vs[]=$this->version;
                
                $modificado = new Zend_Db_Expr("IF(f_estimado!=f_presupuesto,'modificado','')");
                $select = $this->getAdapter()->select();
                $select->from(array('control_economico_series'), array('id','version', 'id_naturaleza', 'mes', 'presupuesto', 'estimado', 'f_estimado', 'f_presupuesto','updated_on', 'modificado' => $modificado));
                $select->joinLeft('usuarios', 'usuarios.id = control_economico_series.updated_by', array('updated_by' => 'nombre'));
                $select->where('anio = ?', $this->anio);
                $select->where('id_zona = ?', $this->idZona);
                $select->where('version IN (?)',array_unique($vs));
                $rows = $this->getAdapter()->fetchAll($select);
                $this->_cache_series = $this->assocArray($rows, 'id_naturaleza');
            } elseif (is_array($this->idZona))
            {
                $select = $this->getAdapter()->select();
                $select->from(array('control_economico_series'), array('id', 'id_naturaleza', 'mes', 'updated_by','updated_on','presupuesto' => new Zend_Db_Expr("ROUND(SUM(presupuesto),2)"), 'estimado' => new Zend_Db_Expr("ROUND(SUM(estimado),2)"), 'f_estimado', 'f_presupuesto'));
                $select->where('anio = ?', $this->anio);
                $select->where('version = ?', $this->version);
                $select->where('id_zona IN (?)', $this->idZona);
                $select->group(array('mes', 'id_naturaleza'));
                $rows = $this->getAdapter()->fetchAll($select);
                $this->_cache_series = $this->assocArray($rows, 'id_naturaleza');
            }

        }


        if (is_numeric($id_naturaleza))
            return $this->_cache_series[$id_naturaleza];
        else
            return $this->_cache_series;

    }


    function getSeries()
    {

        if ($this->_cache_datos===false){//cache
            $anio = $this->anio;
            $idZona = $this->idZona;
    
    
            foreach ($this->getNaturalezas() as $v)
            {
    
                $fila[$v['id']]['nombre'] = $v['nombre'] . ' (P)<br>(A)';
                $fila[$v['id']]['nombreI'] = $v['nombre'];
    
    
                $rows = $this->getAllSeries($v['id']);
    
    
                $series2 = $this->assocArray($rows, 'mes');
                for ($i = 1; $i < 13; $i++)
                {
                   $series[$i]=$series2[$i][0];
                   
                   if($this->version!=0){
                       $series[$i]['presupuesto']=$series2[$i][1]['presupuesto'];
                       $series[$i]['f_presupuesto']=$series2[$i][1]['f_presupuesto'];
                   }
                }
                
                

    
                $fila[$v['id']]['mes'] = $series;
    
                for ($i = 1; $i < 13; $i++)
                {
                    $f[$v['id']]['mes']['acumulado_estimado'] += $fila[$v['id']]['mes'][$i]['estimado'];
                    $fila[$v['id']]['mes'][$i]['acumulado_estimado'] = round($f[$v['id']]['mes']['acumulado_estimado'], 2);
    
                    $f[$v['id']]['mes']['acumulado_presupuesto'] += $fila[$v['id']]['mes'][$i]['presupuesto'];
                    $fila[$v['id']]['mes'][$i]['acumulado_presupuesto'] = round($f[$v['id']]['mes']['acumulado_presupuesto'], 2);
    
                    $fila[$v['id']]['mes'][$i]['nombre'] = $v['nombre'];
                    $fila[$v['id']]['mes'][$i]['idZona'] = $this->idZona;
                    $fila[$v['id']]['mes'][$i]['anio'] = $this->anio;
                    $fila[$v['id']]['mes'][$i]['mes'] = $i;
                    $fila[$v['id']]['mes'][$i]['id_naturaleza'] = $v['id'];
    
                }
    
  
                ksort($fila[$v['id']]['mes']);
            }
              
            $this->_cache_datos=$fila;
            

        }

        return $this->_cache_datos;
    }


    function getSumaNaturalezas($naturalezas, $nombre = '')
    {
        foreach ($naturalezas as $v)
        {
            $n = $this->getSerieNaturalezaMeses($v);

            foreach ($n as $mes => $j)
            {

                $rows[$mes]['naturalezas'] = $naturalezas;
                $rows[$mes]['anio'] = $this->anio;
                $rows[$mes]['mes'] = $mes;
                $rows[$mes]['nombre'] = $nombre;
                $rows[$mes]['idZona'] = $this->idZona;
                $rows[$mes]['presupuesto'] += $j['presupuesto'];
                $rows[$mes]['estimado'] += $j['estimado'];
                $rows[$mes]['acumulado_presupuesto'] += $j['acumulado_presupuesto'];
                $rows[$mes]['acumulado_estimado'] += $j['acumulado_estimado'];
            }
        }
        return $rows;
    }


    function merge($estimado, $presupuesto, $nombre = '')
    {

        for ($i = 1; $i <= 12; $i++)
        {
            $rows[$i]['anio'] = $this->anio;
            $rows[$i]['mes'] = $i;
            $rows[$i]['presupuesto'] = $presupuesto[$i]['presupuesto'];
            $rows[$i]['nombre'] = $nombre;
            $rows[$i]['idZona'] = $this->idZona;
            $rows[$i]['estimado'] = $estimado[$i]['estimado'];
            $rows[$i]['acumulado_presupuesto'] = $presupuesto[$i]['acumulado_presupuesto'];
            $rows[$i]['acumulado_estimado'] = $estimado[$i]['acumulado_estimado'];
        }

        return $rows;
    }

    function resta($array1, $array2, $nombre = '')
    {

        for ($i = 1; $i <= 12; $i++)
        {
            $rows[$i]['anio'] = $this->anio;
            $rows[$i]['mes'] = $i;
            $rows[$i]['nombre'] = $nombre;
            $rows[$i]['idZona'] = $this->idZona;
            $rows[$i]['presupuesto'] = $array1[$i]['presupuesto'] - $array2[$i]['presupuesto'];
            $rows[$i]['estimado'] = $array1[$i]['estimado'] - $array2[$i]['estimado'];
            $rows[$i]['acumulado_presupuesto'] = $array1[$i]['acumulado_presupuesto'] - $array2[$i]['acumulado_presupuesto'];
            $rows[$i]['acumulado_estimado'] = $array1[$i]['acumulado_estimado'] - $array2[$i]['acumulado_estimado'];
        }

        return $rows;
    }


    //Alojamiento

    function getCosteMantenimiento($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(4, 5, 6, 7), 'Coste Alojamiento Mantenimiento');
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;

    }
    function getCosteExplotacion($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 58), 'Coste Alojamiento Explotación');
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }
    function getCosteAlojamiento($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 58, 4, 5, 6, 7), 'Coste Total Alojamiento');
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }
    function getInversaAlojamiento($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(17), 'Inversa Alojamiento');
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getSaldoAlojamiento($mes = '')
    {
        $coste = $this->getCosteAlojamiento();
        $inversa = $this->getInversaAlojamiento();

        $rows = $this->resta($coste, $inversa, 'Saldo Alojamiento');


        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    function getCosteSapAlojamiento($mes = '')
    {

        $array1 = $this->getSumaNaturalezas(array(30));
        $array2 = $this->getCosteAlojamiento();

        $rows = $this->merge($array1, $array2, 'Coste SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getInversaSapAlojamiento($mes = '')
    {
        $estimado = $this->getSumaNaturalezas(array(31));
        $presupuesto = $this->getSumaNaturalezas(array(17));
        $rows = $this->merge($estimado, $presupuesto, 'Inversa SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getSaldoSapAlojamiento($mes = '')
    {

        $coste = $this->getCosteSapAlojamiento();
        $inversa = $this->getInversaSapAlojamiento();

        $rows = $this->resta($coste, $inversa, 'Saldo SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getInmovilizadoAlojamiento($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(15, 16), 'Total Inmovilizado');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;

    }

    function getCosteTotalNetoAlojamiento($mes = '')
    {

        $coste = $this->getCosteAlojamiento();
        $inmovilizado = $this->getInmovilizadoAlojamiento();

        $rows = $this->resta($coste, $inmovilizado, 'Coste Total Neto Alojamiento');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getSaldoTotalNetoAlojamiento($mes = '')
    {

        $coste = $this->getCosteTotalNetoAlojamiento();
        $inversa = $this->getInversaAlojamiento();

        $rows = $this->resta($coste, $inversa, 'Saldo Neto Alojamiento');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    //Electricidad

    function getCosteElectricidad($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(18, 38, 39, 19, 59), 'Coste Electricidad');
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getInversaElectricidad($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(20), 'Inversa Electricidad');
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }
    function getSaldoElectricidad($mes = '')
    {

        $coste = $this->getCosteElectricidad();
        $inversa = $this->getInversaElectricidad();

        $rows = $this->resta($coste, $inversa, 'Saldo Electricidad');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    function getCosteSapElectricidad($mes = '')
    {
        $array1 = $this->getSumaNaturalezas(array(32));
        $array2 = $this->getCosteElectricidad();

        $rows = $this->merge($array1, $array2, 'Coste SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getInversaSapElectricidad($mes = '')
    {
        $estimado = $this->getSumaNaturalezas(array(33));
        $presupuesto = $this->getSumaNaturalezas(array(20));
        $rows = $this->merge($estimado, $presupuesto, 'Inversa SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }
    function getSaldoSapElectricidad($mes = '')
    {

        $coste = $this->getCosteSapElectricidad();
        $inversa = $this->getInversaSapElectricidad();

        $rows = $this->resta($coste, $inversa, 'Saldo SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getInmovilizadoElectricidad($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(47, 48), 'Total Inmovilizado');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;

    }

    function getCosteTotalNetoElectricidad($mes = '')
    {

        $coste = $this->getCosteElectricidad();
        $inmovilizado = $this->getInmovilizadoElectricidad();

        $rows = $this->resta($coste, $inmovilizado, 'Coste Neto');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getSaldoTotalNetoElectricidad($mes = '')
    {

        $coste = $this->getCosteTotalNetoElectricidad();
        $inversa = $this->getInversaElectricidad();

        $rows = $this->resta($coste, $inversa, 'Saldo Neto');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getProduccionElectricidad($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(26), 'Facturación');
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getDiferenciaFacturacionProduccionElectricidad($mes = '')
    {
        $produccion = $this->getProduccionElectricidad();
        $facturacion = $this->getFacturacionElectricidadSgit();

        $rows = $this->resta($produccion, $facturacion, 'Diferencia Producción-SGIT ');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    function getMargenBrutoProduccionElectricidad($mes = '')
    {
        $produccion = $this->getProduccionElectricidad();
        $facturacion = $this->getCosteElectricidad();

        $rows = $this->resta($produccion, $facturacion, 'Margen Bruto Producción');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    //ver facturacion españa

    public function getFacturacionElectricidadSgit()
    {
        
        
        //Para cambiar a nueva imputacion descomentar esto.

        $imputacion= new Application_Model_InformeElectricidadMensualDatacenter();
        
        return $imputacion->getFacturacionElectricidadSgit($this->idZona,$this->anio);
        

        
       
        
      
        
        if (is_numeric($this->idZona))
        {
            $select = $this->getAdapter()->select();
            $select->from(array('imputacion_electricidad'), array('estimado' => 'facturacion', 'mes'));
            $select->where('anio = ?', $this->anio);
            $select->where('id_zona = ?', $this->idZona);
            $select->order('mes');
        } elseif (is_array($this->idZona))
        {
            $select = $this->getAdapter()->select();
            $select->from(array('imputacion_electricidad'), array('estimado' => new Zend_Db_Expr("ROUND(SUM(facturacion),2)"), 'mes'));
            $select->where('anio = ?', $this->anio);
            $select->where('id_zona IN(?)', $this->idZona);
            $select->group(array('anio', 'mes'));
        }

        $facturacion = $this->getAdapter()->fetchAll($select);
        $filas = $this->assocArray2($facturacion, 'mes');

        for ($i = 1; $i < 13; $i++)
        {


            $fila[$i]['nombre'] = 'Facturación Electricidad SGIT';
            $fila[$i]['id_zona'] = $this->idZona;
            $fila[$i]['estimado'] = $filas[$i]['estimado'];
            $fila[$i]['presupuesto'] = $filas[$i]['estimado'];

            $f['acumulado_presupuesto'] += $filas[$i]['estimado'];
            $fila[$i]['acumulado_presupuesto'] = round($f['acumulado_presupuesto'], 2);

            $f['acumulado_estimado'] += $filas[$i]['estimado'];
            $fila[$i]['acumulado_estimado'] = round($f['acumulado_estimado'], 2);
        }


        return $fila;
        
    }


    //MMR


    function getCosteMMR($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(40, 22, 21, 41, 60), 'Coste Total');
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getInversaMMR($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(25, 57), 'Inversa Total');
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }
    function getSaldoMMR($mes = '')
    {

        $coste = $this->getCosteMMR();
        $inversa = $this->getInversaMMR();

        $rows = $this->resta($coste, $inversa, 'Saldo');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    function getCosteSapMMR($mes = '')
    {
        $array1 = $this->getSumaNaturalezas(array(36));
        $array2 = $this->getCosteMMR();

        $rows = $this->merge($array1, $array2, 'Coste SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getInversaSapMMR($mes = '')
    {
        $estimado = $this->getSumaNaturalezas(array(37));
        $presupuesto = $this->getInversaMMR();
        $rows = $this->merge($estimado, $presupuesto, 'Inversa SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }
    function getSaldoSapMMR($mes = '')
    {

        $coste = $this->getCosteSapMMR();
        $inversa = $this->getInversaSapMMR();

        $rows = $this->resta($coste, $inversa, 'Saldo SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }

    function getInmovilizadoMMR($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(23, 24), 'Total Inmovilizado');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;

    }

    function getCosteTotalNetoMMR($mes = '')
    {

        $coste = $this->getCosteMMR();
        $inmovilizado = $this->getInmovilizadoMMR();

        $rows = $this->resta($coste, $inmovilizado, 'Coste Total Neto');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    function getSaldoTotalNetoMMR($mes = '')
    {

        $coste = $this->getCosteTotalNetoMMR();
        $inversa = $this->getInversaMMR();

        $rows = $this->resta($coste, $inversa, 'Saldo Neto');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    function getProduccionMMR($mes = '')
    {

        $rows = $this->getSumaNaturalezas(array(42), 'Facturación');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    function getDiferenciaFacturacionProduccionMMR($mes = '')
    {
        $produccion = $this->getProduccionMMR();
        $facturacion = $this->getFacturacionMMRSgit();

        $rows = $this->resta($produccion, $facturacion, 'Diferencia Produccion - SGIT');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    function getMargenBrutoProduccionMMR($mes = '')
    {
        $produccion = $this->getProduccionMMR();
        $facturacion = $this->getCosteMMR();

        $rows = $this->resta($produccion, $facturacion, 'Margen Bruto Producción');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    public function getFacturacionMMRSgit()
    {
        if (is_numeric($this->idZona))
        {
            $select = $this->getAdapter()->select();
            $select->from(array('imputacion_mmr'), array('estimado' => 'venta', 'mes'));
            $select->where('anio = ?', $this->anio);
            $select->where('id_zona = ?', $this->idZona);
            $select->order('mes');
        } elseif (is_array($this->idZona))
        {
            $select = $this->getAdapter()->select();
            $select->from(array('imputacion_mmr'), array('estimado' => new Zend_Db_Expr("ROUND(SUM(venta),2)"), 'mes'));
            $select->where('anio = ?', $this->anio);
            $select->where('id_zona IN(?)', $this->idZona);
            $select->group(array('anio', 'mes'));
        }

        $facturacion = $this->getAdapter()->fetchAll($select);
        $filas = $this->assocArray2($facturacion, 'mes');

        for ($i = 1; $i < 13; $i++)
        {
            $fila[$i]['nombre'] = 'Facturación MMR SGIT';
            $fila[$i]['id_zona'] = $this->idZona;
            $fila[$i]['estimado'] = $filas[$i]['estimado'];
            $fila[$i]['presupuesto'] = $filas[$i]['estimado'];

            $f['acumulado_presupuesto'] += $filas[$i]['estimado'];
            $fila[$i]['acumulado_presupuesto'] = round($f['acumulado_presupuesto'], 2);

            $f['acumulado_estimado'] += $filas[$i]['estimado'];
            $fila[$i]['acumulado_estimado'] = round($f['acumulado_estimado'], 2);
        }


        return $fila;
    }


    
    function getCosteSapDespliegue($mes = '')
    {
        $rows = $this->getSerieNaturalezaMeses(43,'Coste SAP');

                
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }
    
  function getInversaSapDespliegue($mes = '')
    {
        $rows =   $this->getSerieNaturalezaMeses(44,'Inversa SAP');

        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }
    
    function getSaldoSapDespliegue($mes = '')
    {
        
        $coste =   $this->getCosteSapDespliegue();
        $inversa = $this->getInversaSapDespliegue();
        
        $rows = $this->resta($coste,$inversa,'Saldo SAP');
        
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;
    }


    function getInmovilizadoDespliegue($mes = '')
    {
        $rows = $this->getSumaNaturalezas(array(45, 46),'Total Inmovilizado');
        
        if (is_numeric($mes))
            return $rows[$mes];
        else
            return $rows;

    }







    //Formateadores

    public function addInforme($v, $nombre = null)
    {
        

        
        $view=Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
        
        foreach ((array )$v as $k => $value)
        {
            if ($value['estimado'])
                $v[$k]['estimado'] = round($value['estimado'], 2);
            if ($value['estimado'])
                $v[$k]['presupuesto'] = round($value['presupuesto'], 2);
            if ($value['estimado'])
                $v[$k]['acumulado_presupuesto'] = round($value['acumulado_presupuesto'], 2);
            if ($value['estimado'])
                $v[$k]['acumulado_estimado'] = round($value['acumulado_estimado'], 2);
        }

        $nombre = (is_null($nombre)) ? $v[1]['nombre'] : $nombre;


        $fila = '
        <tr class="nfila" align="right">
        	<td class="ui-state-highlight Q">' .$view->translate($nombre) . ' (P) <br> (A)</td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[1]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[1]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[1]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[1]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[1]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[2]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[2]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[2]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[2]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[2]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[3]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[3]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[3]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[3]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[3]['estimado'],0) . '</span></td>
            <td class="ui-state-highlight Q"><span class="presupuesto">&nbsp;' . $view->numEs($v['3']['acumulado_presupuesto'],0) . '</span><br><span class="estimado">&nbsp;' . $view->numEs($v[3]['acumulado_estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[4]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[4]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[4]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[4]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[4]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[5]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[5]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[5]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[5]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[5]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[6]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[6]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[6]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[6]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[6]['estimado'],0) . '</span></td>
            <td class="ui-state-highlight Q"><span class="presupuesto">&nbsp;' . $view->numEs($v[6]['acumulado_presupuesto'],0) . '</span><br><span class="estimado">&nbsp;' . $view->numEs($v[6]['acumulado_estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[7]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[7]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[7]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[7]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[7]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[8]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[8]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[8]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[8]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[8]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' .$view->numEs( $v[9]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[9]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[9]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[9]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[9]['estimado'],0) . '</span></td>
            <td class="ui-state-highlight Q"><span class="presupuesto">&nbsp;' . $view->numEs($v[9]['acumulado_presupuesto'],0) . '</span><br><span class="estimado">&nbsp;' . $view->numEs($v[9]['acumulado_estimado'],0) . '</span></td>        
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[10]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[10]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[10]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[10]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[10]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[11]['acumulado_presupuesto'],0) . '">&nbsp;' . $view->numEs($v[11]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[11]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[11]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[11]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="presupuesto" title="Anual (P): ' . $view->numEs($v[12]['acumulado_presupuesto'],0) . '">&nbsp;' .$view->numEs( $v[12]['presupuesto'],0) . '</span><br><span class="estimado ' . $view->numEs($v[12]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[12]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[12]['estimado'],0) . '</span></td>
            <td class="ui-state-highlight Q"><span class="presupuesto">&nbsp;' . $view->numEs($v[12]['acumulado_presupuesto'],0) . '</span><br><span class="estimado">&nbsp;' .$view->numEs( $v[12]['acumulado_estimado'],0) . '</span></td>
         </tr>';
        return $fila;
    }


    public function addExport($v, $nombre = null)
    {
        
        $view=Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
        
        foreach ((array )$v as $k => $value)
        {
            if ($value['estimado'])
                $v[$k]['estimado'] = round($value['estimado'], 2);
            if ($value['estimado'])
                $v[$k]['presupuesto'] = round($value['presupuesto'], 2);
            if ($value['estimado'])
                $v[$k]['acumulado_presupuesto'] = round($value['acumulado_presupuesto'], 2);
            if ($value['estimado'])
                $v[$k]['acumulado_estimado'] = round($value['acumulado_estimado'], 2);
        }

        $nombre = (is_null($nombre)) ? $v[1]['nombre'] : $nombre;

        $sal['P'][0]=$nombre.' P';
        $sal['A'][0]=$nombre.' A';
        
        $j=1;
        
        for($i=1;$i<=3;$i++)
        {
             $sal['P'][$j]=$v[$i]['presupuesto'];
             $sal['A'][$j++]=$v[$i]['estimado'];
        }
        
        $sal['P'][$j]=$v[3]['acumulado_presupuesto'];
        $sal['A'][$j++]=$v[3]['acumulado_estimado'];
             
        for($i=4;$i<=6;$i++)
        {
             $sal['P'][$j]=$v[$i]['presupuesto'];
             $sal['A'][$j++]=$v[$i]['estimado'];
        }
        
        $sal['P'][$j]=$v[6]['acumulado_presupuesto'];
        $sal['A'][$j++]=$v[6]['acumulado_estimado'];
        
        for($i=7;$i<=9;$i++)
        {
             $sal['P'][$j]=$v[$i]['presupuesto'];
             $sal['A'][$j++]=$v[$i]['estimado'];
        }
          
        $sal['P'][$j]=$v[9]['acumulado_presupuesto'];
        $sal['A'][$j++]=$v[9]['acumulado_estimado'];
        
        for($i=10;$i<=12;$i++)
        {
             $sal['P'][$j]=$v[$i]['presupuesto'];
             $sal['A'][$j++]=$v[$i]['estimado'];
        }
        
        $sal['P'][$j]=$v[12]['acumulado_presupuesto'];
        $sal['A'][$j]=$v[12]['acumulado_estimado'];
        
        return $sal;
    }


    public function addInformeDespliegue($v, $nombre = null)
    {
        

        
        $view=Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
        
        foreach ((array )$v as $k => $value)
        {
            if ($value['estimado'])
                $v[$k]['estimado'] = round($value['estimado'], 2);
            if ($value['estimado'])
                $v[$k]['presupuesto'] = round($value['presupuesto'], 2);
            if ($value['estimado'])
                $v[$k]['acumulado_presupuesto'] = round($value['acumulado_presupuesto'], 2);
            if ($value['estimado'])
                $v[$k]['acumulado_estimado'] = round($value['acumulado_estimado'], 2);
        }

        $nombre = (is_null($nombre)) ? $v[1]['nombre'] : $nombre;


        $fila = '
        <tr class="nfila" align="right">
        	<td class="ui-state-highlight Q">' .$view->translate($nombre) . '</td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[1]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[1]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[1]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[2]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[2]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[2]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[3]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[3]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[3]['estimado'],0) . '</span></td>
            <td class="ui-state-highlight Q"><span class="estimado">&nbsp;' . $view->numEs($v[3]['acumulado_estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[4]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[4]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[4]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[5]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[5]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[5]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[6]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[6]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[6]['estimado'],0) . '</span></td>
            <td class="ui-state-highlight Q"><span class="estimado">&nbsp;' . $view->numEs($v[6]['acumulado_estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[7]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[7]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[7]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[8]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[8]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[8]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[9]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[9]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[9]['estimado'],0) . '</span></td>
            <td class="ui-state-highlight Q"><span class="estimado">&nbsp;' . $view->numEs($v[9]['acumulado_estimado'],0) . '</span></td>        
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[10]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[10]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[10]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[11]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[11]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[11]['estimado'],0) . '</span></td>
            <td class="ui-widget-content"><span class="estimado ' . $view->numEs($v[12]['modificado'],0)  . '" title="Anual (A): ' . $view->numEs($v[12]['acumulado_estimado'],0)  . '">&nbsp;' . $view->numEs($v[12]['estimado'],0) . '</span></td>
            <td class="ui-state-highlight Q"><span class="estimado">&nbsp;' .$view->numEs( $v[12]['acumulado_estimado'],0) . '</span></td>
         </tr>';
        return $fila;
    }

    public function addPlan($v)
    {

        $view=Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
        
        $fila = '<tr><th class="ui-state-highlight">' . $view->translate($v[1]['nombre']) . '</th>';
        
        for ($i = 1; $i < 13; $i++)
        {
            $key = $v[$i]['id_naturaleza'] . '-' . $v[$i]['anio'] . '-' . $v[$i]['mes']. '-' . $v[$i]['idZona'] . '-presupuesto';
            $fila .= '<td><input title="'.$v[$i]['updated_by'].' '.$view->dateTo($v[$i]['updated_on']).'" type="text" id="' . $key . '" value="' . $v[$i]['presupuesto'] . '"  size="6" class="changePlan"/></td>';
        }
        $fila .= '<th class="ui-state-highlight total" align="right"><span id="total-' . $v[12]['id_naturaleza'] . '">' . $view->numEs($v[12]['acumulado_presupuesto'],0) . '</span></th></tr> ';

        return $fila;

    }
    
    
    public function addAvance($v)
    {


        $view=Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
        
        $fila = '<tr><th class="ui-state-highlight">' . $view->translate($v[1]['nombre']) . '<br><i>Plan</i></th>';
        
        for ($i = 1; $i < 13; $i++)
        {
            $key = $v[$i]['id_naturaleza'] . '-' . $v[$i]['anio'] . '-' . $v[$i]['mes']. '-' . $v[$i]['idZona'] . '-estimado';
            $fila .= '<td align="right"><input title="'.$v[$i]['updated_by'].' '.$view->dateTo($v[$i]['updated_on']).'" type="text" id="' . $key . '" value="' . $v[$i]['estimado'] . '"  size="6" class="changePlan mes-'.$i.'"/>
            <br>&nbsp;<i>' . $view->numEs($v[$i]['presupuesto'],0) . '</i>
            </td>';
        }
        $fila .= '<th class="ui-state-highlight total" align="right"><span id="total-' . $v[12]['id_naturaleza'] . '">' . $view->numEs($v[12]['acumulado_estimado'],0) . '</span>
                <br>&nbsp;<i>' . $view->numEs($v[12]['acumulado_presupuesto'],0) . '</i></th></tr> ';

        return $fila;

    }   
    
    
    
    


    //Resumen Económico

    function getResumenAlojamiento($mes)
    {
        $coste = $this->getCosteSapAlojamiento();
        $inversa = $this->getInversaSapAlojamiento();
        $saldo = $this->getSaldoSapAlojamiento();
        $inmovilizado = $this->getInmovilizadoAlojamiento();

        $fila['ytd']['A']['coste'] = round($coste[$mes]['acumulado_estimado'] / 1000, 2);
        $fila['ytd']['A']['inversa'] = round($inversa[$mes]['acumulado_estimado'] / 1000, 2);
        $fila['ytd']['A']['saldo'] = round($saldo[$mes]['acumulado_estimado'] / 1000, 2);
        $fila['ytd']['A']['inmovilizado'] = round($inmovilizado[$mes]['acumulado_estimado'] / 1000, 2);

        $fila['ytd']['P']['coste'] = round($coste[$mes]['acumulado_presupuesto'] / 1000, 2);
        $fila['ytd']['P']['inversa'] = round($inversa[$mes]['acumulado_presupuesto'] / 1000, 2);
        $fila['ytd']['P']['saldo'] = round($saldo[$mes]['acumulado_presupuesto'] / 1000, 2);
        $fila['ytd']['P']['inmovilizado'] = round($inmovilizado[$mes]['acumulado_presupuesto'] / 1000, 2);

        $fila['C']['A']['coste'] = round($coste[12]['acumulado_estimado'] / 1000, 2);
        $fila['C']['A']['inversa'] = round($inversa[12]['acumulado_estimado'] / 1000, 2);
        $fila['C']['A']['saldo'] = round($saldo[12]['acumulado_estimado'] / 1000, 2);
        $fila['C']['A']['inmovilizado'] = round($inmovilizado[12]['acumulado_estimado'] / 1000, 2);

        $fila['C']['P']['coste'] = round($coste[12]['acumulado_presupuesto'] / 1000, 2);
        $fila['C']['P']['inversa'] = round($inversa[12]['acumulado_presupuesto'] / 1000, 2);
        $fila['C']['P']['saldo'] = round($saldo[12]['acumulado_presupuesto'] / 1000, 2);
        $fila['C']['P']['inmovilizado'] = round($inmovilizado[12]['acumulado_presupuesto'] / 1000, 2);


        $fila['ytd']['chart_saldo'] = $this->googleOmeter($fila['ytd']['A']['saldo'], $fila['ytd']['P']['saldo'], "Saldo Alojamiento YTD P(%s) ", 12, 2011);
        $fila['C']['chart_saldo'] = $this->googleOmeter($fila['C']['A']['saldo'], $fila['C']['P']['saldo'], "Saldo Alojamiento YTD P(%s) ", 12, 2011);


        return $fila;
    }

    function getResumenElectricidad($mes)
    {
        $coste = $this->getCosteSapElectricidad();
        $inversa = $this->getInversaSapElectricidad();
        $saldo = $this->getSaldoSapElectricidad();
        $inmovilizado = $this->getInmovilizadoElectricidad();


        $fila['ytd']['A']['coste'] = round($coste[$mes]['acumulado_estimado'] / 1000, 2);
        $fila['ytd']['A']['inversa'] = round($inversa[$mes]['acumulado_estimado'] / 1000, 2);
        $fila['ytd']['A']['saldo'] = round($saldo[$mes]['acumulado_estimado'] / 1000, 2);
        $fila['ytd']['A']['inmovilizado'] = round($inmovilizado[$mes]['acumulado_estimado'] / 1000, 2);


        $fila['ytd']['P']['coste'] = round($coste[$mes]['acumulado_presupuesto'] / 1000, 2);
        $fila['ytd']['P']['inversa'] = round($inversa[$mes]['acumulado_presupuesto'] / 1000, 2);
        $fila['ytd']['P']['saldo'] = round($saldo[$mes]['acumulado_presupuesto'] / 1000, 2);
        $fila['ytd']['P']['inmovilizado'] = round($inmovilizado[$mes]['acumulado_presupuesto'] / 1000, 2);


        $fila['C']['A']['coste'] = round($coste[12]['acumulado_estimado'] / 1000, 2);
        $fila['C']['A']['inversa'] = round($inversa[12]['acumulado_estimado'] / 1000, 2);
        $fila['C']['A']['saldo'] = round($saldo[12]['acumulado_estimado'] / 1000, 2);
        $fila['C']['A']['inmovilizado'] = round($inmovilizado[12]['acumulado_estimado'] / 1000, 2);


        $fila['C']['P']['coste'] = round($coste[12]['acumulado_presupuesto'] / 1000, 2);
        $fila['C']['P']['inversa'] = round($inversa[12]['acumulado_presupuesto'] / 1000, 2);
        $fila['C']['P']['saldo'] = round($saldo[12]['acumulado_presupuesto'] / 1000, 2);
        $fila['C']['P']['inmovilizado'] = round($inmovilizado[12]['acumulado_presupuesto'] / 1000, 2);


        $fila['ytd']['chart_saldo'] = $this->googleOmeter($fila['ytd']['A']['saldo'], $fila['ytd']['P']['saldo'], "Saldo Electricidad YTD P(%s) ", 12, 2011);
        $fila['C']['chart_saldo'] = $this->googleOmeter($fila['C']['A']['saldo'], $fila['C']['P']['saldo'], "Saldo Electricidad Proyección P(%s) ", 12, 2011);


        return $fila;
    }


    function getResumenMMR($mes)
    {
        $coste = $this->getCosteSapMMR();
        $inversa = $this->getInversaSapMMR();
        $saldo = $this->getSaldoSapMMR();
        $inmovilizado = $this->getInmovilizadoMMR();

        $fila['ytd']['A']['coste'] = round($coste[$mes]['acumulado_estimado'] / 1000, 2);
        $fila['ytd']['A']['inversa'] = round($inversa[$mes]['acumulado_estimado'] / 1000, 2);
        $fila['ytd']['A']['saldo'] = round($saldo[$mes]['acumulado_estimado'] / 1000, 2);
        $fila['ytd']['A']['inmovilizado'] = round($inmovilizado[$mes]['acumulado_estimado'] / 1000, 2);

        $fila['ytd']['P']['coste'] = round($coste[$mes]['acumulado_presupuesto'] / 1000, 2);
        $fila['ytd']['P']['inversa'] = round($inversa[$mes]['acumulado_presupuesto'] / 1000, 2);
        $fila['ytd']['P']['saldo'] = round($saldo[$mes]['acumulado_presupuesto'] / 1000, 2);
        $fila['ytd']['P']['inmovilizado'] = round($inmovilizado[$mes]['acumulado_presupuesto'] / 1000, 2);

        $fila['C']['A']['coste'] = round($coste[12]['acumulado_estimado'] / 1000, 2);
        $fila['C']['A']['inversa'] = round($inversa[12]['acumulado_estimado'] / 1000, 2);
        $fila['C']['A']['saldo'] = round($saldo[12]['acumulado_estimado'] / 1000, 2);
        $fila['C']['A']['inmovilizado'] = round($inmovilizado[12]['acumulado_estimado'] / 1000, 2);

        $fila['C']['P']['coste'] = round($coste[12]['acumulado_presupuesto'] / 1000, 2);
        $fila['C']['P']['inversa'] = round($inversa[12]['acumulado_presupuesto'] / 1000, 2);
        $fila['C']['P']['saldo'] = round($saldo[12]['acumulado_presupuesto'] / 1000, 2);
        $fila['C']['P']['inmovilizado'] = round($inmovilizado[12]['acumulado_presupuesto'] / 1000, 2);


        $fila['ytd']['chart_saldo'] = $this->googleOmeter($fila['ytd']['A']['saldo'], $fila['ytd']['P']['saldo'], "Saldo MMR YTD P(%s) ", 12, 2011);
        $fila['C']['chart_saldo'] = $this->googleOmeter($fila['C']['A']['saldo'], $fila['C']['P']['saldo'], "Saldo MMR Proyección P(%s) ", 12, 2011);


        return $fila;
    }


    function getEstructura()
    {

        if (!$this->cuentas_estructura)
        {
            $this->cuentas_estructura = new Application_Model_Cuentas();
            $this->cuentas_estructura->setAnio($this->anio);
            $this->cuentas_estructura->setZona(50);
        }

        return $this->cuentas_estructura;

    }


    function getDespliegue()
    {

        if (!$this->cuentas_despliegue)
        {
            $this->cuentas_despliegue = new Application_Model_CuentasDespliegue();
            $this->cuentas_despliegue->setAnio($this->anio);
        }

        return $this->cuentas_despliegue;
    }


    function getVarios()
    {

        if (!$this->cuentas_varios)
        {
            $this->cuentas_varios = new Application_Model_CuentasVarios();
            $this->cuentas_varios->setAnio($this->anio);
        }

        return $this->cuentas_varios;

    }


    function sumaResumenes($res, $mes)
    {


        foreach ($res as $v)
        {


            $suma['ytd']['A']['coste'] += $v['ytd']['A']['coste'];
            $suma['ytd']['A']['inversa'] += $v['ytd']['A']['inversa'];
            $suma['ytd']['A']['saldo'] += $v['ytd']['A']['saldo'];
            $suma['ytd']['A']['inmovilizado'] += $v['ytd']['A']['inmovilizado'];
            $suma['ytd']['A']['saldo_neto'] += $v['ytd']['A']['saldo'] + $v['ytd']['A']['inmovilizado'];


            $suma['ytd']['P']['coste'] += $v['ytd']['P']['coste'];
            $suma['ytd']['P']['inversa'] += $v['ytd']['P']['inversa'];
            $suma['ytd']['P']['saldo'] += $v['ytd']['P']['saldo'];
            $suma['ytd']['P']['inmovilizado'] += $v['ytd']['P']['inmovilizado'];
            $suma['ytd']['P']['saldo_neto'] += $v['ytd']['P']['saldo'] + $v['ytd']['P']['inmovilizado'];

            $suma['C']['A']['coste'] += $v['C']['A']['coste'];
            $suma['C']['A']['inversa'] += $v['C']['A']['inversa'];
            $suma['C']['A']['saldo'] += $v['C']['A']['saldo'];
            $suma['C']['A']['inmovilizado'] += $v['C']['A']['inmovilizado'];
            $suma['C']['A']['saldo_neto'] += $v['C']['A']['saldo'] + $v['C']['A']['inmovilizado'];

            $suma['C']['P']['coste'] += $v['C']['P']['coste'];
            $suma['C']['P']['inversa'] += $v['C']['P']['inversa'];
            $suma['C']['P']['saldo'] += $v['C']['P']['saldo'];
            $suma['C']['P']['inmovilizado'] += $v['C']['P']['inmovilizado'];
            $suma['C']['P']['saldo_neto'] += $v['C']['P']['saldo'] + $v['C']['P']['inmovilizado'];

        }


        $suma['ytd']['chart_saldo'] = $this->googleOmeter($suma['ytd']['A']['saldo'], $suma['ytd']['P']['saldo'], "Saldo YTD P(%s) ", 12, 2011);
        $suma['C']['chart_saldo'] = $this->googleOmeter($suma['C']['A']['saldo'], $suma['C']['P']['saldo'], "Saldo Proyección P(%s) ", 12, 2011);


        $suma['mes'] = $mes;
        $suma['anio'] = $this->anio;
        $suma['idZona'] = $this->idZona;
        return $suma;
    }


    function getResumenTotal($mes)
    {

        $res[] = $this->getEstructura()->getResumenAlojamiento($mes);
        $res[] = $this->getResumenAlojamiento($mes);
        $res[] = $this->getResumenMMR($mes);
        $res[] = $this->getResumenElectricidad($mes);
        $res[] = $this->getDespliegue()->getResumenDespliegue($mes);
        $res[] = $this->getVarios()->getResumenVarios($mes);


        return $this->sumaResumenes($res, $mes);
    }
    
    function getResumenTotalwithData($data)
    {

        $res[] = $data['estructura'];
        $res[] = $data['alojamiento'];
        $res[] = $data['mmr'];
        $res[] = $data['electricidad'];
        $res[] = $data['despliegue'];
        $res[] = $data['varios'];


        return $this->sumaResumenes($res, $mes);
    }
    

    public function getEstadosTipo($tipo)
    {
        $select = $this->getAdapter()->select();
        $select->from(array('control_economico_estado'), array('mes', 'estado' => new Zend_Db_Expr("1"),'objeto_cambio','notas_cambio'));
        $select->where('anio = ?', $this->anio);


        if (is_numeric($this->idZona))
        {
            $select->where('id_zona = ?', $this->idZona);
            $n = 1;
        } else
        {
            $select->where('id_zona IN(?)', $this->idZona);
            $n = count($this->idZona);
        }
        $select->where('version = ?', $this->version);
        $select->where('cambio_aceptado = ?', 'SI');
        $select->where('tipo = ?', $tipo);
        $select->group('mes');
        $select->having('COUNT(*) = ?', $n);

        $rows = $this->getAdapter()->fetchAll($select);
        $estados= $this->assocArray2($rows, 'mes');

        for($i=1;$i<=12;$i++)
        {
            if(!$estados[$i]['estado'])$estados[$i]['estado']=0;
            
        }
        return $estados;
        
    }
    
    
   	public function icoEstado($estado)
	{

		if ( $estado['estado'] == 1 )
		{
			$ico = '<span class="ui-icon ui-icon-check myicon" title="Mes Aprobado por comite ' . $estado['notas_cambio'] . '"></span>';
		} elseif ( $estado['objeto_cambio'] == 1 )
		{
			$ico = '<span class="ui-icon ui-icon-locked myicon" title="Mes Pendiente de aprobación' . $estado['notas_cambio'] . '"></span>';
		}
		else
		{
		    if($estado['abiertos'])
		        $abiertos=implode(',',$estado['abiertos']);
            else 
                $abiertos='';
			$ico = '<span class="ui-icon ui-icon-unlocked myicon" title="Mes abierto: ' . $abiertos. ' '.$estado['notas_cambio'] .'"></span>';
		}

		return $ico;
	}
    
    
    
    


    public function getEstadosTotal()
    {

        $a = $this->getEstadosTipo('Alojamiento');
        $b = $this->getEstadosTipo('Electricidad');
        $c = $this->getEstadosTipo('MMR');


        $max[] = max(array_keys($a));
        $max[] = max(array_keys($b));
        $max[] = max(array_keys($c));

        return min($max);

    }


    function googleOmeter($A, $P, $titulo, $mes, $anio)
    {

        $view = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');

        $txt_A = 'A(' . $view->numES($A, 0) . ')';
        $txt_P = 'P(' . $view->numES($P, 0) . ')';

        $titulo = sprintf($titulo, $view->numES($P, 0));
        $centro = $P;
        $punto = $A;


        $max = -250;
        $distancia_centro_max = abs($max - $centro);
        $min = $centro + $distancia_centro_max;
        $valorgrado = ($min != $max) ? 100 / ($min - $max) : 100;


        $val = $min - $punto;

        $por = $val * $valorgrado;
        $data['chxl'] = "|" . round($min) . "|" . round(($centro + (($min - $centro) / 2))) . "|" . round($centro) . "|" . round(($centro + (($max - $centro) / 2))) . "|" . round($max) . "";

        $data['chd'] = "$por|50";
        //$data['chl'] = $txt_saldo;
        $data['chl'] = "$txt_A";

        $data['chls'] = "1|2,5,5|10|1";

        if ($por < 10 || $por > 90)
        {
            $data['chs'] = '350x160';
        } else
        {
            $data['chs'] = '320x190';
        }

        $salida['chart'] = $this->chart($data);
        $salida['titulo'] = $titulo;
        $salida['mes'] = $mes;
        $salida['anio'] = $anio;


        return $salida;

    }


    function chart($data)
    {

        if (empty($data['chs']))
            $data['chs'] = '320x170';
        if (empty($data['chls']))
            $data['chls'] = '2|14';
        if (!empty($data['chd']))
            $data['chd'] = 't:' . $data['chd'];
        if (!empty($data['chxl']))
            $data['chxl'] = '0:' . $data['chxl'];

        //if(empty($data['chf']))$data['chf']='c,lg,90,FFE7C6,0,FFE7C6,0.8|bg,lg,90,FFE7C6,0,FFE7C6,0.8';
        //if(empty($data['chf']))$data['chf']='c,lg,90,666666,0,cccccc,0.8|bg,lg,90,666666,0,cccccc,0.8';


        foreach ($data as $k => $v)
        {
            $params[] = "$k=$v";
        }
        $parametros = implode('&', $params);


        $chart = "http://chart.apis.google.com/chart?cht=gom&chxt=y&" . $parametros;

        return $chart;
    }


    function googleOmeter2($A, $P, $titulo, $mes, $anio)
    {

        $view = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');

        $txt_saldo = 'A(' . $view->numES($A, 0) . ')';

        $titulo = sprintf($titulo, $view->numES($P, 0));
        $centro = $P;
        $punto = $A;


        $max = -250;
        $distancia_centro_max = abs($max - $centro);
        $min = $centro + $distancia_centro_max;
        $valorgrado = 100 / ($min - $max);
        $val = $min - $punto;

        $por = $val * $valorgrado;
        $data['chxl'] = "|" . round($min) . "|" . round(($centro + (($min - $centro) / 2))) . "|" . round($centro) . "|" . round(($centro + (($max - $centro) / 2))) . "|" . round($max) . "";
        $data['chd'] = $por;
        $data['chl'] = $txt_saldo;


        if ($por < 10 || $por > 90)
        {
            $data['chs'] = '350x160';
        } else
        {
            $data['chs'] = '320x190';
        }

        $salida['chart'] = $this->chart($data);
        $salida['titulo'] = $titulo;
        $salida['mes'] = $mes;
        $salida['anio'] = $anio;


        return $salida;

    }


    function chart2($data)
    {

        if (empty($data['chs']))
            $data['chs'] = '320x170';
        if (empty($data['chls']))
            $data['chls'] = '2|14';
        if (!empty($data['chd']))
            $data['chd'] = 't:' . $data['chd'];
        if (!empty($data['chxl']))
            $data['chxl'] = '0:' . $data['chxl'];

        //if(empty($data['chf']))$data['chf']='c,lg,90,FFE7C6,0,FFE7C6,0.8|bg,lg,90,FFE7C6,0,FFE7C6,0.8';
        //if(empty($data['chf']))$data['chf']='c,lg,90,666666,0,cccccc,0.8|bg,lg,90,666666,0,cccccc,0.8';


        foreach ($data as $k => $v)
        {
            $params[] = "$k=$v";
        }
        $parametros = implode('&', $params);


        $chart = "http://chart.apis.google.com/chart?cht=gom&chxt=y&" . $parametros;

        return $chart;
    }




    
    
    
    
    
        

}
